﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
using DECOR.BL.BE;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json;
using System.Collections.Specialized;
using DECOR.BL.BC;

namespace DECOR.Touchapp
{
    public partial class planFacturacion : System.Web.UI.Page
    {
        string pNumPedido = "";
        string Json = "";
        string pRetval = "";
        string pTotal = "200.00";

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Request.HttpMethod.Equals("POST"))
            {
                
            }
            else
            {
                CredencialesController.cargarInfo(Request.Params); //(SIEMPRE)
                pNumPedido = Request.Params["pNumPedido"] != null ? Request.Params["pNumPedido"] : ""; //"0000003723"; // 
                //numPedido = "0060018074";  60018074
                if (!string.IsNullOrEmpty(pNumPedido))
                {
                    pRetval = "{\"success\": {0}, \"errors\":{\"reason\": \"{1}\"}, ";
                    pRetval += "\"planFact\": {2}, \"CatFactBE\": {3} ";
                    //pRetval += "\"lstDenom\": {4}, \"lstMoneda\": {5}, ";
                    //pRetval += "\"lstMotivoBloq\": {6}, \"lstClaseDoc\": {7}, ";
                    //pRetval += "\"lstRFACT\": {8}, \"lstSTATU\": {9}, ";
                    //pRetval += "\"lstTFPLU\": {10}, \"lstCPag\": {11} ";
                    pRetval += "}";
                    
                    PlanFacturacion(pNumPedido);
                    //CargarCombosPlanFact();
                }
                else
                {
                    //pRetval = "{\"success\": {0}, \"errors\":{\"reason\": \"{1}\"}, ";
                    //pRetval += "\"lstDenom\": {2}, \"lstMoneda\": {3}, ";
                    //pRetval += "\"lstMotivoBloq\": {4}, \"lstClaseDoc\": {5}, ";
                    //pRetval += "\"lstRFACT\": {6}, \"lstSTATU\": {7}, ";
                    //pRetval += "\"lstTFPLU\": {8}, \"lstCPag\": {9} ";
                    //pRetval += "}";
                    //CargarCombos();
                }

                Response.ContentType = "application/json; charset=UTF-8";
                Response.Write(pRetval);
            }
        }

        private void PlanFacturacion(string pNumPedido)
        {
            List<PlanFactBE> planFact = null;
            List<CatFactBE> CatFactBE;

            pNumPedido = pNumPedido.PadLeft(10, '0');
            CatFactBE = new List<CatFactBE>();
            planFact = PedidoBC.Instance.getPlanFact(pNumPedido, out CatFactBE);
            addItem(planFact);            
            if (planFact != null)
            {
                Json = JsonConvert.SerializeObject(planFact);
                pRetval = pRetval.Replace("{0}", "true");
                pRetval = pRetval.Replace("{1}", "");
                pRetval = pRetval.Replace("{2}", Json);
                if (CatFactBE != null)
                {
                    Json = JsonConvert.SerializeObject(CatFactBE);
                    pRetval = pRetval.Replace("{3}", Json);
                }
                else
                {
                    pRetval = pRetval.Replace("{3}", "null");
                }
            }
            else
            {
                Json = JsonConvert.SerializeObject(planFact);
                pRetval = pRetval.Replace("{0}", "false");
                pRetval = pRetval.Replace("{1}", "No se encontró información");
                pRetval = pRetval.Replace("{2}", "null");
                pRetval = pRetval.Replace("{3}", "null");
            }            
        }

        private void addItem(List<PlanFactBE> _planFact)
        {
            List<PlanFactBE> planFact = null;
            planFact = _planFact;
            decimal porcentaje = 0;
            bool add = true;
            foreach (PlanFactBE pf in planFact)
            {
                porcentaje += decimal.Round(pf.FPROZ / 100, 3);
                add = planFact[planFact.Count - 1].FKDAT.Year.Equals(1) ? false : true;
            }
            if (porcentaje < 1 && add)
            {
                if (planFact == null)
                {
                    planFact = new List<PlanFactBE>();
                }
                PlanFactBE planFactBE = new PlanFactBE();

                if (planFact.Count == 0)
                {
                    planFactBE.FPROZ = 0;
                    planFactBE.FAKWR = planFactBE.FPROZ * decimal.Parse(pTotal);
                }
                else
                {
                    planFactBE.FPROZ = (1 - porcentaje) * 100;
                    planFactBE.FAKWR = (1 - porcentaje) * decimal.Parse(pTotal);
                }
                planFactBE.TAXK1 = "I";

                if (planFact.Count > 0)
                    planFactBE.FPLTR = (int.Parse(planFact[planFact.Count - 1].FPLTR) + 1).ToString().PadLeft(6, '0');
                else
                    planFactBE.FPLTR = "000001";

                planFact.Add(planFactBE);
            }
        }

        //private void CargarCombos()
        //{
        //    List<GenericBE> lstDenom = new List<GenericBE>();
        //    List<GenericBE> lstMoneda = new List<GenericBE>();
        //    List<GenericBE> lstMotivoBloq = new List<GenericBE>();
        //    List<GenericBE> lstClaseDoc = new List<GenericBE>();
        //    List<GenericBE> lstRFACT = new List<GenericBE>();
        //    List<GenericBE> lstSTATU = new List<GenericBE>();
        //    List<GenericBE> lstTFPLU = new List<GenericBE>();
        //    List<GenericBE> lstCPag = new List<GenericBE>();

        //    ParametroBC.Instance.get_Param_PFact(ref  lstDenom, ref  lstMoneda,
        //                                                ref lstMotivoBloq, ref lstClaseDoc, ref lstRFACT,
        //                                                ref  lstSTATU, ref lstTFPLU, ref lstCPag);

        //    pRetval = pRetval.Replace("{0}", "true");
        //    pRetval = pRetval.Replace("{1}", "");
        //    Json = JsonConvert.SerializeObject(lstDenom);
        //    pRetval = pRetval.Replace("{2}", Json);
        //    Json = JsonConvert.SerializeObject(lstMoneda);
        //    pRetval = pRetval.Replace("{3}", Json);
        //    Json = JsonConvert.SerializeObject(lstMotivoBloq);
        //    pRetval = pRetval.Replace("{4}", Json);
        //    Json = JsonConvert.SerializeObject(lstClaseDoc);
        //    pRetval = pRetval.Replace("{5}", Json);
        //    Json = JsonConvert.SerializeObject(lstRFACT);
        //    pRetval = pRetval.Replace("{6}", Json);
        //    Json = JsonConvert.SerializeObject(lstSTATU);
        //    pRetval = pRetval.Replace("{7}", Json);
        //    Json = JsonConvert.SerializeObject(lstTFPLU);
        //    pRetval = pRetval.Replace("{8}", Json);
        //    Json = JsonConvert.SerializeObject(lstCPag);
        //    pRetval = pRetval.Replace("{9}", Json);
        //}

        //private void CargarCombosPlanFact()
        //{
        //    List<GenericBE> lstDenom = new List<GenericBE>();
        //    List<GenericBE> lstMoneda = new List<GenericBE>();
        //    List<GenericBE> lstMotivoBloq = new List<GenericBE>();
        //    List<GenericBE> lstClaseDoc = new List<GenericBE>();
        //    List<GenericBE> lstRFACT = new List<GenericBE>();
        //    List<GenericBE> lstSTATU = new List<GenericBE>();
        //    List<GenericBE> lstTFPLU = new List<GenericBE>();
        //    List<GenericBE> lstCPag = new List<GenericBE>();

        //    ParametroBC.Instance.get_Param_PFact(ref  lstDenom, ref  lstMoneda,
        //                                                ref lstMotivoBloq, ref lstClaseDoc, ref lstRFACT,
        //                                                ref  lstSTATU, ref lstTFPLU, ref lstCPag);

        //    Json = JsonConvert.SerializeObject(lstDenom);
        //    pRetval = pRetval.Replace("{4}", Json);
        //    Json = JsonConvert.SerializeObject(lstMoneda);
        //    pRetval = pRetval.Replace("{5}", Json);
        //    Json = JsonConvert.SerializeObject(lstMotivoBloq);
        //    pRetval = pRetval.Replace("{6}", Json);
        //    Json = JsonConvert.SerializeObject(lstClaseDoc);
        //    pRetval = pRetval.Replace("{7}", Json);
        //    Json = JsonConvert.SerializeObject(lstRFACT);
        //    pRetval = pRetval.Replace("{8}", Json);
        //    Json = JsonConvert.SerializeObject(lstSTATU);
        //    pRetval = pRetval.Replace("{9}", Json);
        //    Json = JsonConvert.SerializeObject(lstTFPLU);
        //    pRetval = pRetval.Replace("{10}", Json);
        //    Json = JsonConvert.SerializeObject(lstCPag);
        //    pRetval = pRetval.Replace("{11}", Json);
        //}
    }
}
